/*
 * BTStatistics.cc
 */

#include "BTStatistics.h"

namespace peermaliziosi {

BTStatistics::BTStatistics() {}

BTStatistics::~BTStatistics() {}

int BTStatistics::numSeeder=0;
int BTStatistics::numDownloader=0;

int BTStatistics::totMsgOnFly=0;
int BTStatistics::totByteOnFly=0;

int BTStatistics::totRequest=0;
int BTStatistics::totPiece=0;
int BTStatistics::totCancel=0;


//void BTStatistics::initializeStatistics(){}

int BTStatistics::addNewSeeder(int peerID){ // un nuovo peer e' diventato seeder

    numSeeder++;
    EV << "Il peer " << peerID << " e' diventato seeder\n";
    return numSeeder;

}


//void BTStatistics::initializeStatistics(){}

int BTStatistics::delSeeder(int peerID){ // un seeder e' uscito dallo swarm

    numSeeder--;
    EV << "Il peer " << peerID << " (seeder) e' uscito dallo swarm\n";
    return numSeeder;

}

int BTStatistics::addNewDownloader(int peerID) {

    // un peer si e' aggiunto allo swarm come downloader
    numDownloader++;
    EV << "Il peer " << peerID << " si e' aggiunto allo swarm come downloader\n";
    return numDownloader;

}

int BTStatistics::delDownloader(int peerID) {

    // un downloader e' uscito dallo swarm oppure e' diventato seeder
    numDownloader--;
    EV << "Il downloader peer " << peerID << " e' uscito dallo swarm oppure e' diventato seeder\n";
	return numDownloader;
}


int BTStatistics::addMsgOnFly() {
    // un nuovo msg e' arrivato nella nuvola
    totMsgOnFly++;
    return totMsgOnFly;
}

int BTStatistics::delMsgOnFly() {
    // un msg e' uscito dalla nuvola e consegnato al destinatario
    totMsgOnFly--;
    return totMsgOnFly;
}

int BTStatistics::addByteOnFly(int byte) {
    // un nuovo msg e' arrivato nella nuvola
    totByteOnFly= totByteOnFly + byte;
    return totByteOnFly;
}

int BTStatistics::delByteOnFly(int byte) {
    // un msg e' uscito dalla nuvola e consegnato al destinatario
    totByteOnFly= totByteOnFly - byte;
    return totByteOnFly;
}


int BTStatistics::addRequestCloud() {
    // nuova richiesta nella nuvola
    totRequest++;
    return totRequest;
}

int BTStatistics::delRequestCloud() {
    // richiesta uscita dalla nuvola
    totRequest--;
    return totRequest;
}


int BTStatistics::addPieceCloud() {
    // blocco entrato nella nuvola
    totPiece++;
    return totPiece;
}

int BTStatistics::delPieceCloud() {
    //blocco uscito dalla nuvola
    totPiece--;
    return totPiece;
}

int BTStatistics::addCancelCloud() {
    // cancel entrato nella nuvola
    totCancel++;
    return totCancel;
}

int BTStatistics::delCancelCloud() {
    // cancel uscito dalla nuvola
    totCancel--;
    return totCancel;
}


//void BTStatistics::finishStatistics(){}


} /* namespace peermaliziosi */
